class Animal:

    def __init__(self):
        print('Animal里的init')

    def run(self):
        print(f'跑')

    def sleep(self):
        print('睡')

    def eat(self):
        print('吃')

    def __str__(self):
        print('这是一只猫')

# 子类Cat继承父类Animal的函数
class Cat(Animal):

    def __init__(self):
        print('Cat的init')
        # 子类的构造函数调用父类的构造函数
        super(Cat, self).__init__()
        Animal.__init__(self)

    # def __str__(self):
    #     print('这是一只猫')

    def catch(self):
        # 子类的方法中调用父类的方法。  父类.方法名（self）
        Animal.sleep(self)
        print('猫抓老鼠')


class Parent2:

    def met2(self):
        print('父类2的方法')


class Parent1:

    def met1(self):
        print('父类1的方法')


class Child(Parent2,Parent1):

    pass


class Vector:
    def __init__(self,x,y):
        self.x = x
        self.y = y

        # 重写str方法
    def __str__(self):
        return f'Vector:({self.x},{self.y})'

        # 运算内置方法
    def __add__(self, other):
        return Vector(self.x + other.x,self.y + other.y)


class Counter:
    # 类的私有属性,只能在类的内部用（ 类名.属性 或 self.属性 ）访问
    __count = 5

    def count(self):
        self.__plus()
        Counter.__count += 1
        # print(F'计数结果：{Counter.__count}')
        print(F'计数结果：{self.__count}')

    # 类的私有的方法
    def __plus(self):
        self.__count += 1


